package com.risen.project.domain.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.risen.project.excel.annotation.ExcelColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;

@Data
public class ProjectManageDTO {
    @NotBlank(message = "项目ID不能为空")
    @ExcelColumn("项目ID")
    @ExcelProperty("项目ID")
    @ApiModelProperty(value = "项目ID", required = true)
    private String baseProjId;

    @NotBlank(message = "项目名称不能为空")
    @ExcelColumn("项目名称")
    @ExcelProperty("项目名称")
    @ApiModelProperty(value = "项目名称", required = true)
    private String baseProjName;

    @ExcelColumn("申报人")
    @ExcelProperty("申报人")
    @ApiModelProperty("申报人")
    private String baseApply;

    @ExcelColumn("申报单位")
    @ExcelProperty("申报单位")
    @ApiModelProperty("申报单位")
    private String baseApplyDept;
    @NotBlank(message = "行政区划编码不能为空")
    @ExcelColumn("行政区划编码")
    @ExcelProperty("行政区划编码")
    @ApiModelProperty(value = "行政区划编码", required = true)
    private String baseAreaCode;

    @NotBlank(message = "行政区划名称不能为空")
    @ExcelColumn("行政区划名称")
    @ExcelProperty("行政区划名称")
    @ApiModelProperty(value = "行政区划名称", required = true)
    private String baseAreaName;

    @NotBlank(message = "项目负责人不能为空")
    @ExcelColumn("项目负责人")
    @ExcelProperty("项目负责人")
    @ApiModelProperty(value = "项目负责人", required = true)
    private String baseProjPrincipal;

    @NotBlank(message = "项目负责人手机号不能为空")
    @ExcelColumn("项目负责人手机号")
    @ExcelProperty("项目负责人手机号")
    @ApiModelProperty(value = "项目负责人手机号", required = true)
    private String baseProjPrincipalCall;

    @NotBlank(message = "项目联系人不能为空")
    @ExcelColumn("项目联系人")
    @ExcelProperty("项目联系人")
    @ApiModelProperty(value = "项目联系人", required = true)
    private String baseProjContacts;

    @NotBlank(message = "项目联系人手机号不能为空")
    @ExcelColumn("项目联系人手机号")
    @ExcelProperty("项目联系人手机号")
    @ApiModelProperty(value = "项目联系人手机号", required = true)
    private String baseProjContactsCall;

    @NotBlank(message = "上级业务主管单位不能为空")
    @ExcelColumn("上级业务主管单位")
    @ExcelProperty("上级业务主管单位")
    @ApiModelProperty(value = "上级业务主管单位", required = true)
    private String baseProvManDeprt;

    @NotBlank(message = "上级业务主管单位浙政钉ID不能为空")
    @ExcelColumn("上级业务主管单位浙政钉ID")
    @ExcelProperty("上级业务主管单位浙政钉ID")
    @ApiModelProperty(value = "上级业务主管单位浙政钉ID", required = true)
    private String baseProvManDeprtDing;

    @NotBlank(message = "本级主管部门不能为空")
    @ExcelColumn("本级主管部门")
    @ExcelProperty("本级主管部门")
    @ApiModelProperty(value = "本级主管部门", required = true)
    private String baseManDeprt;

    @NotBlank(message = "本级主管部门的浙政钉ID不能为空")
    @ExcelColumn("本级主管部门的浙政钉ID")
    @ExcelProperty("本级主管部门的浙政钉ID")
    @ApiModelProperty(value = "本级主管部门的浙政钉ID", required = true)
    private String baseManDeprtDing;

    @NotBlank(message = "建设单位名称不能为空")
    @ExcelColumn("建设单位名称")
    @ExcelProperty("建设单位名称")
    @ApiModelProperty(value = "建设单位名称", required = true)
    private String baseBuildDeprt;

    @NotBlank(message = "建设单位的浙政钉ID不能为空")
    @ExcelColumn("建设单位的浙政钉ID")
    @ExcelProperty("建设单位的浙政钉ID")
    @ApiModelProperty(value = "建设单位的浙政钉ID", required = true)
    private String baseBuildDeprtDing;

    /**
     * 建设单位统一信用代码
     */
    @ExcelColumn("建设单位统一信用代码")
    @ExcelProperty("建设单位统一信用代码")
    @ApiModelProperty("建设单位统一信用代码")
    private String baseBuildDepartUsci;

    @NotBlank(message = "项目类型不能为空")
    @ExcelColumn("项目类型")
    @ExcelProperty("项目类型")
    @ApiModelProperty(value = "项目类型 1-建设，2-运维", required = true)
    private String baseProjType;

    @NotBlank(message = "是否首次新建不能为空")
    @ExcelColumn("是否首次新建")
    @ExcelProperty("是否首次新建")
    @ApiModelProperty(value = "是否首次新建 1-否，2-是", required = true)
    private String baseProjWhetNew;

    @NotBlank(message = "项目状态不能为空")
    @ExcelColumn("项目状态")
    @ExcelProperty("项目状态")
    @ApiModelProperty(value = "项目状态 1-未立项，2-已立项-未启动，3-已立项-建设中，4-已立项-已验收，5-已立项-已终止，6-已立项-变更建设中", required = true)
    private String baseProjSetProg;

    /**
     * 关联应用
     */
    @ExcelColumn("关联应用")
    @ExcelProperty("关联应用")
    @ApiModelProperty("关联应用")
    private String baseProjSys;

    /**
     * 关联应用IRS编码
     */
    @ExcelColumn("关联应用IRS编码")
    @ExcelProperty("关联应用IRS编码")
    @ApiModelProperty("关联应用IRS编码")
    private String baseProjSysCode;

    @NotBlank(message = "申报金额不能为空")
    @ExcelColumn("申报金额")
    @ExcelProperty("申报金额")
    @ApiModelProperty(value = "申报金额", required = true)
    private String baseProjDeclAmount;

    @NotBlank(message = "批复金额不能为空")
    @ExcelColumn("批复金额")
    @ExcelProperty("批复金额")
    @ApiModelProperty(value = "批复金额", required = true)
    private String baseProjReplyAmount;

    @NotBlank(message = "预算来源不能为空")
    @ExcelColumn("预算来源")
    @ExcelProperty("预算来源")
    @ApiModelProperty(value = "预算来源 1-自有资金，2-政府投资-本级财政资金，3-政府投资-上级补助资金，4-银行贷款，5-其他资金（五种资金来源类型可一个或多个同时存在多个时以中文分号隔开）", required = true)
    private String baseProjAmountOri;

    @NotBlank(message = "预算涉及年度不能为空")
    @ExcelColumn("预算涉及年度")
    @ExcelProperty("预算涉及年度")
    @ApiModelProperty(value = "预算涉及年度", required = true)
    private String baseProjSetYear;

    /**
     * 项目简介
     */
    @ExcelColumn("项目简介")
    @ExcelProperty("项目简介")
    @ApiModelProperty("项目简介")
    private String baseProjIntro;

    @NotBlank(message = "立项依据不能为空")
    @ExcelColumn("立项依据")
    @ExcelProperty("立项依据")
    @ApiModelProperty(value = "立项依据，以下7种中的一个或多个：1-国家部委下达任务、相关文件明确建设时间，2-本级及上级领导批示，3-重大任务，4-重大共性问题，5-重大决策，6-普惠性惠企利民，7-其他（多个时以中文分号隔开）", required = true)
    private String baseProjBasis;

    @NotBlank(message = "建设层级不能为空")
    @ExcelColumn("建设层级")
    @ExcelProperty("建设层级")
    @ApiModelProperty(value = "建设层级 G-国家级，P-省级，PP-省本级，M-市级，MM-市本级，C-区县，T-乡镇（街道）", required = true)
    private String baseProjConsClass;

    /**
     * 发改编码,发改”投资在线3.0平台”赋予的项目编码
     */
    @ExcelColumn("发改编码")
    @ExcelProperty("发改编码")
    @ApiModelProperty("发改编码")
    private String setProjCodeDevlp;

    /**
     * 财政编码,财政”省财政预算申报系统”赋予的项目编码
     */
    @ExcelColumn("财政编码")
    @ExcelProperty("财政编码")
    @ApiModelProperty("财政编码")
    private String setProjCodeFinan;

    @NotBlank(message = "信息是否有效不能为空")
    @ExcelColumn("信息是否有效")
    @ExcelProperty("信息是否有效")
    @ApiModelProperty(value = "信息是否有效 0-否，1-是", required = true)
    private String isEffective;

    /**
     * 立项批复文件,项目状态为已立项-未启动时必填
     */
    @ExcelColumn("立项批复文件下载地址")
    @ExcelProperty("立项批复文件下载地址")
    @ApiModelProperty("立项批复文件下载地址")
    private String approvalFile;

    /**
     * 采购文件,项目状态为已立项-建设中时必填
     */
    @ExcelColumn("采购文件下载地址")
    @ExcelProperty("采购文件下载地址")
    @ApiModelProperty("采购文件下载地址")
    private String purchaseFile;

    /**
     * 中标（成交）通知书,项目状态为已立项-建设中时必填
     */
    @ExcelColumn("中标（成交）通知书下载地址")
    @ExcelProperty("中标（成交）通知书下载地址")
    @ApiModelProperty("中标（成交）通知书下载地址")
    private String biddingFile;

    /**
     * 采购合同,项目状态为已立项-建设中时必填
     */
    @ExcelColumn("采购合同下载地址")
    @ExcelProperty("采购合同下载地址")
    @ApiModelProperty("采购合同下载地址")
    private String purchaseContract;

    /**
     * 承建单位,项目状态为已立项-建设中时必填
     */
    @ExcelColumn("承建单位")
    @ExcelProperty("承建单位")
    @ApiModelProperty("承建单位")
    private String baseConsDeprt;

    /**
     * 承担单位统一信用代码,项目状态为已立项-建设中时必填
     */
    @ExcelColumn("承担单位统一信用代码")
    @ExcelProperty("承担单位统一信用代码")
    @ApiModelProperty("承担单位统一信用代码")
    private String baseConsDeprtUsci;

    /**
     * 监理单位,项目状态为已立项-建设中时可选择填报
     */
    @ExcelColumn("监理单位")
    @ExcelProperty("监理单位")
    @ApiModelProperty("监理单位")
    private String baseSupeName;

    /**
     * 监理单位统一信用代码,项目状态为已立项-建设中时可选择填报
     */
    @ExcelColumn("监理单位统一信用代码")
    @ExcelProperty("监理单位统一信用代码")
    @ApiModelProperty("监理单位统一信用代码")
    private String baseSupeUsci;

    /**
     * 验收报告,项目状态为已立项-已验收时必填
     */
    @ExcelColumn("验收报告下载地址")
    @ExcelProperty("验收报告下载地址")
    @ApiModelProperty("验收报告下载地址")
    private String baseAcceptFile;

    /**
     * 变更批复文件,项目状态为已立项-变更建设中时必填
     */
    @ExcelColumn("变更批复文件下载地址")
    @ExcelProperty("变更批复文件下载地址")
    @ApiModelProperty("变更批复文件下载地址")
    private String baseChanFile;

    /**
     * 创建时间
     */
//    @ExcelColumn("创建时间")
//    @ExcelProperty("创建时间")
//    @ApiModelProperty("创建时间")
//    private LocalDateTime createdAt;

    /**
     * 修改时间
     */
//    @ExcelColumn("修改时间")
//    @ExcelProperty("修改时间")
//    @ApiModelProperty("修改时间")
//    private LocalDateTime updatedAt;

    @NotBlank(message = "关联推送业务系统id不能为空")
    @ExcelColumn("关联推送业务系统id")
    @ExcelProperty("关联推送业务系统id")
    @ApiModelProperty(value = "关联推送业务系统id", required = true)
    private String sysProjId;

    @ExcelColumn("建设类型")
    @ExcelProperty("建设类型")
    @ApiModelProperty(value = "建设类型（1软件,2硬件,3服务）")
    private String baseConstructionType;

    @ExcelColumn("可行性研究报告")
    @ExcelProperty("可行性研究报告")
    @ApiModelProperty(value = "可行性研究报告（建设方案、运维方案）项目状态为已立项-未启动时可选择填写，运维项目上传运维方案")
    private String researchReportFile;
}
